--[[
 * @file : AttrDef.lua
 * @type : lua lib
 * @author : linfeng
 * @created : 2019-12-24 15:39:51
 * @Last Modified time: 2019-12-24 15:39:51
 * @department : Arabic Studio
 * @brief : 属性定义
 * Copyright(C) 2019 IGG, All rights reserved
]]

local AttrDef = {}

---@class defaultBattleAttrClass
local defaultBattleAttr = {
    infantryAttack                                  =           0,      -- 步兵攻击力(战斗属性)
    cavalryAttack                                   =           0,      -- 骑兵攻击力(战斗属性)
    bowmenAttack                                    =           0,      -- 弓兵攻击力(战斗属性)
    siegeCarAttack                                  =           0,      -- 攻城器械攻击力(战斗属性)
    warningTowerAttack                              =           0,      -- 警戒塔攻击力(战斗属性)
    infantryDefense                                 =           0,      -- 步兵防御力(战斗属性)
    cavalryDefense                                  =           0,      -- 骑兵防御力(战斗属性)
    bowmenDefense                                   =           0,      -- 弓兵防御力(战斗属性)
    siegeCarDefense                                 =           0,      -- 攻城器械防御力(战斗属性)
    warningTowerDefense                             =           0,      -- 警戒塔防御力(战斗属性)
    infantryHpMax                                   =           0,      -- 步兵生命值(战斗属性)
    cavalryHpMax                                    =           0,      -- 骑兵生命值(战斗属性)
    bowmenHpMax                                     =           0,      -- 弓兵生命值(战斗属性)
    siegeCarHpMax                                   =           0,      -- 攻城器械生命值(战斗属性)
    warningTowerHpMax                               =           0,      -- 警戒塔生命力(战斗属性)
    angerMax                                        =           0,      -- 怒气值上限(战斗属性)
    heroExpMulti                                    =           0,      -- 统帅经验值百分比加成(战斗属性)
    troopsHealthMulti                               =           0,      -- 部队治疗百分比(战斗属性)
    troopsToHealthMulti                             =           0,      -- 部队受到治疗百分比(战斗属性)
    infantryAttackMulti                             =           0,      -- 步兵攻击力百分比(战斗属性)
    cavalryAttackMulti                              =           0,      -- 骑兵攻击力百分比(战斗属性)
    bowmenAttackMulti                               =           0,      -- 弓兵攻击力百分比(战斗属性)
    siegeCarAttackMulti                             =           0,      -- 攻城器械攻击力百分比(战斗属性)
    infantryDefenseMulti                            =           0,      -- 步兵防御力百分比(战斗属性)
    cavalryDefenseMulti                             =           0,      -- 骑兵防御力百分比(战斗属性)
    bowmenDefenseMulti                              =           0,      -- 弓兵防御力百分比(战斗属性)
    siegeCarDefenseMulti                            =           0,      -- 攻城器械防御力百分比(战斗属性)
    infantryHpMaxMulti                              =           0,      -- 步兵生命值百分比(战斗属性)
    cavalryHpMaxMulti                               =           0,      -- 骑兵生命值百分比(战斗属性)
    bowmenHpMaxMulti                                =           0,      -- 弓兵生命值百分比(战斗属性)
    siegeCarHpMaxMulti                              =           0,      -- 攻城器械生命值百分比(战斗属性)
    barbarianAttackDamageMulti                      =           0,      -- 对野蛮人伤害比例(战斗属性)
    barbarianVillageAttackDamageMulti               =           0,      -- 对野蛮人城寨伤害比例(战斗属性)
    barbarianFightBackDamageMulti                   =           0,      -- 对野蛮人反击比例(战斗属性)
    barbarianVillageFightBackDamageMulti            =           0,      -- 对野蛮人城寨反击比例(战斗属性)
    barbarianAttackDamageReduceMulti                =           0,      -- 对野蛮人伤害减免比例(战斗属性)
    barbarianVillageAttackDamageReduceMulti         =           0,      -- 对野蛮人城寨伤害减免比例(战斗属性)
    barbarianFightBackDamageReduceMulti             =           0,      -- 对野蛮人反击伤害减免比例(战斗属性)
    barbarianVillageFightBackDamageReduceMulti      =           0,      -- 对野蛮人城寨反击伤害减免比例(战斗属性)
    barbarianSkillDamageMulti                       =           0,      -- 对野蛮人技能伤害比例(战斗属性)
    barbarianVillageSkillDamageMulti                =           0,      -- 对野蛮人城寨技能伤害比例(战斗属性)
    barbarianSkillDamageReduceMulti                 =           0,      -- 对野蛮人技能伤害减免比例(战斗属性)
    barbarianVillageSkillDamageReduceMulti          =           0,      -- 对野蛮人城寨技能伤害减免比例(战斗属性)
    infantryVsInfantryDamageMulti                   =           0,      -- 步兵对步兵伤害比例(战斗属性)
    infantryVsCavalryDamageMulti                    =           0,      -- 步兵对骑兵伤害比例(战斗属性)
    infantryVsBowmenDamageMulti                     =           0,      -- 步兵对弓兵伤害比例(战斗属性)
    infantryVsSiegeCarDamageMulti                   =           0,      -- 步兵对攻城器械伤害比例(战斗属性)
    infantryVsWarningTowerDamageMulti               =           0,      -- 步兵对警戒塔伤害比例(战斗属性)
    cavalryVsInfantryDamageMulti                    =           0,      -- 骑兵对步兵伤害比例(战斗属性)
    cavalryVsCavalryDamageMulti                     =           0,      -- 骑兵对骑兵伤害比例(战斗属性)
    cavalryVsBowmenDamageMulti                      =           0,      -- 骑兵对弓兵伤害比例(战斗属性)
    cavalryVsSiegeCarDamageMulti                    =           0,      -- 骑兵对攻城器械伤害比例(战斗属性)
    cavalryVsWarningTowerDamageMulti                =           0,      -- 骑兵对警戒塔伤害比例(战斗属性)
    bowmenVsInfantryDamageMulti                     =           0,      -- 弓兵对步兵伤害比例(战斗属性)
    bowmenVsCavalryDamageMulti                      =           0,      -- 弓兵对骑兵伤害比例(战斗属性)
    bowmenVsBowmenDamageMulti                       =           0,      -- 弓兵对弓兵伤害比例(战斗属性)
    bowmenVsSiegeCarDamageMulti                     =           0,      -- 弓兵对攻城器械伤害比例(战斗属性)
    bowmenVsWarningTowerDamageMulti                 =           0,      -- 弓兵对警戒塔伤害比例(战斗属性)
    siegeCarVsInfantryDamageMulti                   =           0,      -- 攻城器械对步兵伤害比例(战斗属性)
    siegeCarVsCavalryDamageMulti                    =           0,      -- 攻城器械对骑兵伤害比例(战斗属性)
    siegeCarVsBowmenDamageMulti                     =           0,      -- 攻城器械对弓兵伤害比例(战斗属性)
    siegeCarVsSiegeCarDamageMulti                   =           0,      -- 攻城器械对攻城器械伤害比例(战斗属性)
    siegeCarVsWarningTowerDamageMulti               =           0,      -- 攻城器械对警戒塔伤害比例(战斗属性)
    infantryVsInfantryReduceMulti                   =           0,      -- 步兵对步兵减伤比例(战斗属性)
    infantryVsCavalryReduceMulti                    =           0,      -- 步兵对骑兵减伤比例(战斗属性)
    infantryVsBowmenReduceMulti                     =           0,      -- 步兵对弓兵减伤比例(战斗属性)
    infantryVsSiegeCarReduceMulti                   =           0,      -- 步兵对攻城器械减伤比例(战斗属性)
    infantryVsWarningTowerReduceMulti               =           0,      -- 步兵对警戒塔减伤比例(战斗属性)
    cavalryVsInfantryReduceMulti                    =           0,      -- 骑兵对步兵减伤比例(战斗属性)
    cavalryVsCavalryReduceMulti                     =           0,      -- 骑兵对骑兵减伤比例(战斗属性)
    cavalryVsBowmenReduceMulti                      =           0,      -- 骑兵对弓兵减伤比例(战斗属性)
    cavalryVsSiegeCarReduceMulti                    =           0,      -- 骑兵对攻城器械减伤比例(战斗属性)
    cavalryVsWarningTowerReduceMulti                =           0,      -- 骑兵对警戒塔减伤比例(战斗属性)
    bowmenVsInfantryReduceMulti                     =           0,      -- 弓兵对步兵减伤比例(战斗属性)
    bowmenVsCavalryReduceMulti                      =           0,      -- 弓兵对骑兵减伤比例(战斗属性)
    bowmenVsBowmenReduceMulti                       =           0,      -- 弓兵对弓兵减伤比例(战斗属性)
    bowmenVsSiegeCarReduceMulti                     =           0,      -- 弓兵对攻城器械减伤比例(战斗属性)
    bowmenVsWarningTowerReduceMulti                 =           0,      -- 弓兵对警戒塔减伤比例(战斗属性)
    siegeCarVsInfantryReduceMulti                   =           0,      -- 攻城器械对步兵减伤比例(战斗属性)
    siegeCarVsCavalryReduceMulti                    =           0,      -- 攻城器械对骑兵减伤比例(战斗属性)
    siegeCarVsBowmenReduceMulti                     =           0,      -- 攻城器械对弓兵减伤比例(战斗属性)
    siegeCarVsSiegeCarReduceMulti                   =           0,      -- 攻城器械对攻城器械减伤比例(战斗属性)
    siegeCarVsWarningTowerReduceMulti               =           0,      -- 攻城器械对警戒塔减伤比例(战斗属性)
    attackDamageMulti                               =           0,      -- 普攻伤害百分比(战斗属性)
    fightBackDamageMulti                            =           0,      -- 反击伤害百分比(战斗属性)
    skillDamageMulti                                =           0,      -- 技能伤害百分比(战斗属性)
    mainHeroSkillDamageMulti                        =           0,      -- 主将技能伤害百分比(战斗属性)
    secondaryHeroSkillDamageMulti                   =           0,      -- 副将技能伤害百分比(战斗属性)
    attackDamageReduceMulti                         =           0,      -- 普攻伤害减免百分比(战斗属性)
    fightBackDamageReduceMulti                      =           0,      -- 反击伤害减免百分比(战斗属性)
    skillDamageReduceMulti                          =           0,      -- 技能伤害减免百分比(战斗属性)
    cityDefenseAttackDamageMulti                    =           0,      -- 攻城防守部队普攻伤害百分比(战斗属性)
    cityDefenseFightBackDamageMulti                 =           0,      -- 攻城防守部队反击伤害百分比(战斗属性)
    cityDefenseSkillDamageMulti                     =           0,      -- 攻城防守部队技能伤害百分比(战斗属性)
    cityDefenseAttackDamageReduceMulti              =           0,      -- 攻城防守部队普攻伤害减免百分比(战斗属性)
    cityDefenseFightBackDamageReduceMulti           =           0,      -- 攻城防守部队反击伤害减免百分比(战斗属性)
    cityDefenseSkillDamageReduceMulti               =           0,      -- 攻城防守部队技能伤害减免百分比(战斗属性)
    cityAttackDamageMulti                           =           0,      -- 攻城部队普攻伤害百分比(战斗属性)
    cityFightBackDamageMulti                        =           0,      -- 攻城部队反击伤害百分比(战斗属性)
    citySkillDamageMulti                            =           0,      -- 攻城部队技能伤害百分比(战斗属性)
    cityAttackDamageReduceMulti                     =           0,      -- 攻城部队普攻伤害减免百分比(战斗属性)
    cityFightBackDamageReduceMulti                  =           0,      -- 攻城部队反击伤害减免百分比(战斗属性)
    citySkillDamageReduceMulti                      =           0,      -- 攻城部队技能伤害减免百分比(战斗属性)
    massAttackDamageMulti                           =           0,      -- 集结部队普攻伤害百分比(战斗属性)
    massFightBackDamageMulti                        =           0,      -- 集结部队反击伤害百分比(战斗属性)
    massSkillDamageMulti                            =           0,      -- 集结部队技能伤害百分比(战斗属性)
    massAttackDamageReduceMulti                     =           0,      -- 集结部队普攻伤害减免百分比(战斗属性)
    massFightBackDamageReduceMulti                  =           0,      -- 集结部队反击伤害减免百分比(战斗属性)
    massSkillDamageReduceMulti                      =           0,      -- 集结部队技能伤害减免百分比(战斗属性)
    attackAnger                                     =           0,      -- 普攻怒气值(战斗属性)
    attackAngerMulti                                =           0,      -- 普攻怒气值增加千分比(战斗属性)
    guardTowerAttackMulti                           =           0,      -- 警戒塔攻击千分比(战斗属性)
    guardTowerDefenseMulti                          =           0,      -- 警戒塔防御千分比(战斗属性)
    guardTowerHpMaxMulti                            =           0,      -- 警戒塔生命千分比(战斗属性)
    attackCityDeathMulti                            =           0,      -- 攻城阵亡比例减免百分比(战斗属性)
    rallyAttackMulti                                =           0,      -- 集结部队攻击千分比(战斗属性)
    rallyDefenseMulti                               =           0,      -- 集结部队防御千分比(战斗属性)
    rallyHpMaxMulti                                 =           0,      -- 集结部队血量千分比(战斗属性)
    rallyMoveSpeedMulti                             =           0,      -- 集结部队行军速度千分比(战斗属性)
    garrisonAttackMulti                             =           0,      -- 驻防部队攻击千分比(战斗属性)
    garrisonDefenseMulti                            =           0,      -- 驻防部队防御千分比(战斗属性)
    garrisonHpMaxMulti                              =           0,      -- 驻防部队生命千分比(战斗属性)
    allTerrAtkMulti                                 =           0,      -- 联盟领地攻击加成(战斗属性)
    troopsAnger                                     =           0,      -- 回合结束增减怒气(战斗属性)
}

---@class defaultAttrClass
local defaultAttr = {
    troopsCapacity                                  =           0,      -- 部队容量(战斗属性)
    massTroopsCapacity                              =           0,      -- 集结部队容量(战斗属性)
    massTroopsCapacityMulti                         =           0,      -- 集结部队容量百分比(战斗属性)
    troopsDispatchNumber                            =           0,      -- 部队派遣队列(战斗属性)
    wallDurableMax                                  =           0,      -- 城墙耐久上限(战斗属性)
    infantryTrainNumber                             =           0,      -- 步兵训练容量(战斗属性)
    cavalryTrainNumber                              =           0,      -- 骑兵训练容量(战斗属性)
    bowmenTrainNumber                               =           0,      -- 弓兵训练容量(战斗属性)
    siegeCarTrainNumber                             =           0,      -- 攻城器械训练容量(战斗属性)
    infantryMoveSpeed                               =           0,      -- 步兵行军速度(战斗属性)
    cavalryMoveSpeed                                =           0,      -- 骑兵行军速度(战斗属性)
    bowmenMoveSpeed                                 =           0,      -- 弓兵行军速度(战斗属性)
    siegeCarMoveSpeed                               =           0,      -- 攻城器械行军速度(战斗属性)
    troopsCapacityMulti                             =           0,      -- 部队容量百分比(战斗属性)
    lightInjuredMulti                               =           0,      -- 部队轻伤百分比(战斗属性)
    severeInjuredMulti                              =           0,      -- 部队重伤百分比(战斗属性)
    deathMulti                                      =           0,      -- 部队死亡百分比(战斗属性)
    infantryMoveSpeedMulti                          =           0,      -- 步兵行军速度百分比(战斗属性)
    cavalryMoveSpeedMulti                           =           0,      -- 骑兵行军速度百分比(战斗属性)
    bowmenMoveSpeedMulti                            =           0,      -- 弓兵行军速度百分比(战斗属性)
    siegeCarMoveSpeedMulti                          =           0,      -- 攻城器械行军速度百分比(战斗属性)
    troopsHealthResourcesMulti                      =           0,      -- 部队治疗资源消耗百分比(战斗属性)
    scoutSpeed                                      =           0,      -- 斥候行军速度(战斗属性)
    scoutSpeedMulti                                 =           0,      -- 斥候行军速度加成百分比(战斗属性)
    scoutNumber                                     =           0,      -- 斥候行军队列(战斗属性)
    scoutView                                       =           0,      -- 斥候探图范围(战斗属性)
    allTerrMoveSpeedMulti                           =           0,      -- 联盟领地移动速度加成(战斗属性)
    allTerrBurnSpeedMulti                           =           0,      -- 联盟建筑燃烧速度(战斗属性)
    rallyTimesReduce                                =           0,      -- 集结准备时间减少(战斗属性)
    marchSpeedMulti                                 =           0,      -- 部队行军速度百分比(战斗属性)
    builDqueue                                      =           0,      -- 建筑工人队列(经济属性)
    buildSpeedMulti                                 =           0,      -- 建造速度百分比(经济属性)
    researchSpeedMulti                              =           0,      -- 研究速度百分比(经济属性)
    trainSpeedMulti                                 =           0,      -- 训练速度百分比(经济属性)
    healSpeedMulti                                  =           0,      -- 治疗速度百分比(经济属性)
    foodCapacityMulti                               =           0,      -- 粮食产量百分比(经济属性)
    woodCapacityMulti                               =           0,      -- 木头产量百分比(经济属性)
    stoneCapacityMulti                              =           0,      -- 石头产量百分比(经济属性)
    glodCapacityMulti                               =           0,      -- 金币产量百分比(经济属性)
    getFoodSpeedMulti                               =           0,      -- 食物采集速度百分比(经济属性)
    getWoodSpeedMulti                               =           0,      -- 木头采集速度百分比(经济属性)
    getStoneSpeedMulti                              =           0,      -- 石头采集速度百分比(经济属性)
    getGlodSpeedMulti                               =           0,      -- 金币采集速度百分比(经济属性)
    getDiamondSpeedMulti                            =           0,      -- 钻石采集速度百分比(经济属性)
    troopsSpaceMulti                                =           0,      -- 部队运载量百分比(经济属性)
    extraResourcesMulti                             =           0,      -- 资源采集额外百分比(经济属性)
    resourcesProtectSpaceMulti                      =           0,      -- 资源保护量百分比(经济属性)
    maxVitality                                     =           0,      -- 行动力上限(经济属性)
    equipmentProduceSpeedMulti                      =           0,      -- 装备材料生产速度百分比(经济属性)
    hospitalSpaceMulti                              =           0,      -- 医院容量百分比(经济属性)
    vitalityRecoveryMulti                           =           0,      -- 行动力恢复百分比(经济属性)
    transportSpeedMulti                             =           0,      -- 运输部队行军速度百分比(经济属性)
    allianceHelpTime                                =           0,      -- 联盟帮助时间加成(经济属性)
    arenaDayFreeNum                                 =           0,      -- 日落峡谷次数(经济属性)
    allianceMemberNum                               =           0,      -- 联盟成员人数上限增加值(经济属性)
    allianceDepotMulti                              =           0,      -- 联盟仓库的存储容量加成(经济属性)
    allianceBuildingCostMulti                       =           0,      -- 联盟建筑资源消耗加成(经济属性)
    allianceFlagNum                                 =           0,      -- 联盟旗帜上限加值(经济属性)
    allianceBuildingDurableMulti                    =           0,      -- 联盟建筑耐久度加成(经济属性)
    allianceFlagSpeedMulti                          =           0,      -- 联盟旗帜建造速度加成(经济属性)
    allianceBuildingSpeedMulti                      =           0,      -- 联盟建筑建造速度加成(经济属性)
    vitalityReduction                               =           0,      -- 攻击中立单位减少的行动力点数
}

---@see 合并战斗属性
table.mergeEx(defaultAttr, defaultBattleAttr)

---@see 获取角色相关属性
---@return defaultAttrClass
function AttrDef:getDefaultAttr()
    return table.copy(defaultAttr)
end

---@see 获取战斗相关属性
---@return defaultBattleAttrClass
function AttrDef:getDefaultBattleAttr()
    return table.copy(defaultBattleAttr)
end

return AttrDef